home *** CD-ROM | disk | FTP | other *** search
- *
- **
- ***
- ****
- *****
- TODO3D
- *******
- ***************************************************************************
- (1994) DEMETRIO FERNANDEZ ALVAREZ
- ***************************************************************************
-
- ESTEREOGRAMAS Y TECNICAS DE VISIONADO
-
- Cuando un habla de ver imagenes en 3D se le vienen a la mente unas gafas
- de un color rojo y verde para cada ojo y una foto hecha borrosamente en ro-
- jo y verde y que al mirarla con estas gafas se ve asombrosamente en 3d y
- sin estar borrosa. Bueno no es un secreto que cada uno tenemos dos ojos y
- que cada uno percibe la imagen que estamos mirando desde un punto de vista
- diferente con unos centimetros de separacion una imagen de la otra tantos
- centimetros como hay de un ojo a otro, el cerebro funde esas dos imagenes y
- el resultado es una imagen en 3 dimensiones, resumiendo para conseguir ver
- una imagen en 3 dimensiones deberiamos conseguir que cada ojo vea una ima-
- gen diferente y que ademas las dos imagenes sean la misma pero tomadas des-
- de dos angulos diferentes el cerebro se encargara del resto. Si volvemos a
- las famosas gafas 3D estas se basan en que si tu ves atraves del color rojo
- no veras en la imagen todo aquelo que este en rojo, e igual para el verde
- si tomamos dos fotos una con un filtro rojo desde un angulo y otra con un
- filtro verde desde otro angulo y hacemos una fusion de las dos en una foto
- obtendremos una especie de foto en verde y rojo desemfocada, pero si mira-
- mos la foto a traves de un plastico transparente de color rojo notaremos
- que solo notamos la foto hecha en verde y que no vemos todo lo que en la fo-
- to esta en rojo e igual para el color verde , si ponemos un trozo de cada
- color para cada ojo el resultado es que en el ojo que esta el plastico rojo
- vemos la imagen en verde y en el otro que tenemos el plastico verde veremos
- la imagen en rojo y ya tenemos lo que perseguiamos un imagen diferente en
- cado ojo y cada una de ellas desde un angulo diferente casi como si fueran
- los dos ojos, entonces el cerebro hara que veamos una imagen en 3 dimensio-
- nes. Este metodo es bastante bueno pero tiene un problema la imagen que se
- ve en 3 dimensiones es monocroma no podemos hacer que la imagen en 3D tenga
- unos colores determinados. Bueno para conseguir que la imagen en 3 dimensio-
- nes tenga tambien colores deberemos olvidar este metodo para eso se va a lo
- facil una tele para cada ojo y ya esta, es lo que conocemos como gafas de
- realidad virtual nos ponen en cada ojo una imagen variada en un angulo y el
- cerebro hace el resto ,hay otros tipos de metodos como utilizar gafas pola-
- rizadas etc...
-
- ¿Pero como conseguir una imagen 3D sin ningun tipo de aparato? Bueno para
- explicar esto vais a tener que hacer un pequeño esperimento que consiste en
- que os acerqueis a la ventana de vuestra casa y mirar algo que este en la
- calle lo suficientemente lejos (yo veo unos contenedores de basura, es mejor
- que lo que veais este fijo), bueno ya lo estais viendo pues ahora fijaros en
- el cristal que teneis en frente (el mio tiene una manchita y me fijo en ella
- si no teneis mancha fabricarla), bueno una vez que tenemos la vista en el
- cristal sin quitarla del cristal nos daremos cuenta de que ahora lo que ha-
- biamos visto antes a lo lejos ya no es un contenedor sino dos y no estamos
- borrachos, si lo hacemos al reves la mancha del cristal es doble. Hecho de
- otra manera en un papel dibuja un punto mira al punto y pon un dedo a media
- distancia entre el papel y el punto, ahora fijate en el dedo y veras que
- sin estar borracho el punto es doble vemos dos puntos, si nos fijamos en el
- punto es el dedo el que es doble. Bueno siguiente esperimento ahora dibuja
- mos un segundo punto en el papel y haciendo lo mismo con el dedo trataremos
- de ver exactamente 3 puntos, no es muy complicado intentarlo poniendo el de-
- do a diversas distancias. Confio en que lo hayais conseguido, pues bien si
- en vez de dos puntos fueran dos imagenes una diferente de la otra pero va-
- riando en angulo de vista conseguiremos que la imagen central este en 3 di
- mensiones, es lo que se conoce como parejas estereoscopicas y existen casi
- desde que se ha inventado la fotografia ya en mil ochocientos cincuenta y
- algo se hacian parejas estereoscopicas con camaras de dos objetivos, hasta
- unos de nuestros mas famosos pintores Salvador Dalí ha hecho parejas este-
- reoscopicas con sus cuadros lo cual exige un gran conocimento de geometria
- si disponeis de algun raytrace podeis hacer dos render de una misma imagen
- desde dos puntos de vista diferentes con esas dos imagenes podeis construir
- vuestra propia pareja estereoscopica (Probarlo ya vereis como es verdadera-
- mente espectacular el efecto que se produce).
-
- Christopher W. Tyler cambio los estereogramas de dos imagenes por los es
- tereogramas de una sola imagen que tan de moda estan ahora y que estan con-
- siguiendo que libros en los que no hay nada que leer sean autenticos bestse-
- llers. Los estereogramas de una sola imagen de Tyler han sido y son una au-
- tentica revolucion. ¿En que se basan? pues vienen a ser lo mismo que los es-
- tereogramas de dos imagenes, la tecnica de visionado es la misma. El este-
- reograma de una sola imagen no es en verdad una sola imagen sino siete u
- ocho (es un numero simbolico simpre mas de una imagen) imagenes iguales
- puestas unas juntas con las otras hasta formar una sola imagen. Estas image-
- nes que estan juntas las unas con las otras no son exactamente iguales se
- diferencian en unos pocos de rasgos precisamente esto si que va a a ser di-
- ficil de explicar, pero quedaros con la idea de que los estereogramas de
- una sola imagen son la repeticion de un patron horizontalmente y que el an-
- cho de este patron mientras se repite se varia para conseguir el efecto 3D
- a mayor o menor ancho del patron de repeticion este trozo se vera luego a
- mayor o menor profundidad, porque es así creo que ni el mismo Tyler lo sa-
- bria explicar pero si alguien lo sabe que vengan y me lo exlique, que cons-
- te que tengo mi propia teoria pero no me atrevo a exponerla.
-
- Para que lo entendais mejor os voy a esplicar como construir vuestro pri-
- mer estereograma de una sola imagen. Coger un program de dibujo semejante al
- deluxepaint o al paintbrush da igual dos o windows. Coger el spray y pintar
- una zona con el spray recortar un trozo cuadrado del trozo pintado con el
- spray (recordad que la zona tenga los suficientes puntos). Borrar la panta-
- lla poner el recorte en el centro del dibujo un trozo mas arriba tambien y
- ahora crearemos otro recorte pero cogiendo el primer tercio del recorte y
- el tercer tercio del recorte, es decir el nuevo recorte es dos tercios del
- anterior, si ponemos el recorte justo pegado justo delante y detras del re-
- corte anterior, procurando que quede borde con borde, ya tendremos nuestro
- primer estereograma en el cual veremos como un cuadrado se sale hacia afue-
- ra o hacia a dentro depende de la tecnica de visionado. Porque aunque no lo
- haya dicho hay dos tecnicas de visionado con los ojos cruzados y los ojos
- en paralelo. Los ojos cruzados corresponde a la ya explicada de poner el de-
- do delante y fijarse en el dedo con lo cual estaras cruzando los ojos,po-
- niendo los ojos bizcos pones el punto focal entre la imagen y tus ojos justo
- donde esta el dedo. Con los ojos en paralelo pones el punto focal detras de
- la pagina que estas viendo estas tratando de poner la vista mas alla de la
- hoja, ya lo habras oido varias veces pero se consigue poniedo la imagen pe-
- gada a los ojos e ir separandola de los ojos hasta que se forme la imagen
- en 3D. Las dos tecnicas estan contrapuestas lo que con una es hacia afuera
- con la otra es hacia adentro, la que mas se utiliza en los libros que encon-
- traras es con los ojos en paralelo, yo personalmente prefiero con los ojos
- en cruzado, es una tecnica mucho mas facil de conseguir para mi y mucha gen-
- te.
-
- *
- **
- ***
- ****
- *****
- TODO3D
- *******
- ***************************************************************************
- (1994) DEMETRIO FERNANDEZ ALVAREZ
- ***************************************************************************
-
- Mi programa todo3d crea estereogramas de una sola imagen apartir de un PCX
- de 640*480 de resolucion y con 16 colores cada uno de los cuales correspon-
- de a una escala profundidad, se puede especificar el patron a usar con otro
- PCX sino se hace se usaran puntos aleatorios, y graba otro PCX como salida,
- tambien se puede especificar el ancho inicial del patron a repetir lo cual
- puede no ser muy importante sino fuera porque el resultado final puede ser
- mas o menos bonito y facil de ver ya que habra que modificar mas o menos el
- punto focal para poder ver la imagen,y tambien la tecnica de visionado con
- la cual va a ser visto nuestro estereograma.
-
- Si utilizais un PCX como patron de este se cogeran los primeros pixels
- de cada linea, y debereis procurar que el patron varie mucho que los pixels
- contiguos varien de unos a otros que no se repitan mucho, la paleta del PCX
- de salida sera la del PCX patron. Si no utilizamos un PCX patron se untili-
- zaran puntos aleatorios y la paleta sera la del PCX de entrada para pasar a
- 3D.
-
- En el PCX de entrada para construir el estereograma deberiais dejar a co-
- lor cero los primeros y los ultimos de cada linea al menos tantos como la
- anchura inicial del patron a usar, ademas los pixels de cierta altura no de-
- berian estar sueltos esdecir que un pixel de altura 15 puede que no se vea
- al final en cambio si son 15 pixels de altura 15 estos si se veran. La ima-
- gen final en 3D se corresponde con la inicial aunque pierde algo en anchu-
- ra y un pixel que pierde anchura ya no se vera, a mayor altura mejor que
- sean mas pixels contiguos.
-
- *
- **
- ***
- ****
- *****
- TODO3D
- *******
- ***************************************************************************
- (1994) DEMETRIO FERNANDEZ ALVAREZ
- ***************************************************************************
-
- Este fichero de texto y el programa TODO3D me pertenece y se puede copiar
- y distribuir sin modificacion alguna, sino es con fines lucrativos . Si se
- quiere distribuir con fines lucrativos debera escribirme antes para llegar a
- un acuerdo de distribucion.
-
- Si vais a usar el programa debereis enviarme una carta un disquete de
- 3.5 y vuestro mejos estereograma hasta el momento, claro.
-
- Si tienes algun problema con el programa escribeme, y cuentame que te ha
- pasado. Si tienes algun problema de programacion y te apetece compartirlo
- escribeme seguro que entre los dos encontraremos alguna solucion. Quieres
- conocer algun aspecto que se te resiste escribeme. Estoy a vuestra disposi-
- cion.Si quereis el listado del programa enviadme un billete de 20 dolares
- o uno de 2000 pelas y os mandare 2 discos de alta llenos de listados de pro
- gramacion Grafica,SoundBLaster( Formatos graficos,scrolls,giros,zoom, etc..).
- Tambien os lo puedo enviar contra reembolso
-
- DEMETRIO FERNANDEZ ALVAREZ
- C/SAN JOSE Nº 14 1º
- 24420 FABERO (LEON)
-
- NOTA: La ortografia no es lo mio ni mucho menos las tildes.
-
-
- *
- **
- ***
- ****
- *****
- TODO3D
- *******
- ***************************************************************************
- (1994) DEMETRIO FERNANDEZ ALVAREZ
- ***************************************************************************
- Aqui teneis la rutina en C de mi programa. No espereis que os lo esplique a
- investigar. No olvideis mencionar que la rutina es la mia, si la usais
- unsigned rep=40;
- unsigned aleatorio[200];
- unsigned aleatorio2[200]; \patron
- unsigned maximo=40;
- unsigned NPUNTOS=1;
- unsigned paralelo=1;
-
- void genera(unsigned ini,unsigned fin)
- {int i,j,d;
- d=fin-ini;
- j=random(rep-d);
- for(i=ini;i<fin;i++)
- {aleatorio[i]=aleatorio2[j+i-ini];}
- }
-
- void genera2(unsigned *tabl,unsigned ini,unsigned fin)
- {int i;
- for(i=ini;i<fin;i++)
- {tabl[i]=random(getmaxcolor());}
- }
-
- void adelante(unsigned ini,unsigned salto)
- {unsigned i;
- for (i=maximo;i>ini;i--) aleatorio[i+NPUNTOS*salto]=aleatorio[i];
- maximo+=NPUNTOS*salto;
- genera(i,i+NPUNTOS*salto);
- }
-
- void atras(unsigned ini,unsigned salto)
- {unsigned i;
- for (i=ini;i<maximo;i++) aleatorio[i]=aleatorio[i+NPUNTOS*salto];
- maximo-=NPUNTOS*salto;
- }
-
- void rastrealinea(unsigned numlin)
- {unsigned i,j,k;
- unsigned color;
- color=0;
- maximo=rep;
- genera2(aleatorio,numlin,0,maximo*2);
- genera2(aleatorio2,numlin,0,maximo*2);
- j=0;
- for(i=0;i<640;i++)
- {if (paralelo) k=15-getpixel(i,numlin);
- else k=getpixel(i,numlin);
- if (k!=color)
- {if (k<color) adelante(j,color-k);
- else atras(j,k-color);
- color=k;}
- putpixel(i,numlin,aleatorio[j]);
- j=(j+1)%maximo;}
- }
-
- void pantalla(void)
- {
- unsigned i;
- for (i=0;i<=480;i++)
- {if (i%2) rastrealinea(i);
- else rastrealinea(480-i);}
- }
-